1. Technical Field
The present disclosure relates to solid-state storage subsystems. More specifically, the present disclosure relates to the use of error correction codes in solid-state storage subsystems.
2. Description of the Related Art
Solid-state storage subsystems are used to store a wide variety of data. With increasing memory capacity, a mixture of information (e.g., program files, set-up files, user data, etc.) corresponding to a variety of storage applications can be conveniently stored on a single solid-state storage subsystem, such as a removable flash memory card or drive that attaches to a host computer. Many of these storage applications demand high levels of data integrity over the life of the subsystem.
Error Correcting Codes (ECC) are sometimes used in a solid-state storage subsystems to increase data integrity. During write operations, the storage subsystem calculates ECC values that describe the write data, and stores these ECC values in non-volatile memory with the write data. On read operations, the storage subsystem determines whether the ECC values read from memory describe the corresponding data values read from memory. If an ECC error is detected (i.e., the ECC does not describe the data), the storage subsystem can, in some cases, correct the error before returning the data to the host.
The ability of the storage subsystem to detect and correct errors can be increased by increasing the quantity of ECC bits stored per unit of data. However, such increases in the quantity of ECC used generally decreases the performance of the storage subsystem and may require additional (i.e., off-sector) storage space when the quantity of ECC data is larger than the amount of management data provided for each sector.